package src;


import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.ArrayList;
import java.util.Calendar;

import javax.swing.*; 

public class Interface extends JFrame{
private JComboBox	Type;
private JTextField	Quantite;
private JTextField	Prix;
private JTextField	Jour;
private JTextField	Mois;
private JTextField	Annee;
private JTextField	Heure;
private JTextField	Minute;
private Moteur		M;
private Joueur		J;
private JPanel		panel;
private GridBagConstraints c;
private JLabel[]	AffListe;

	public Joueur getJ() {
		return J;
	}

	public Moteur getM() {
		return M;
	}

	public String printTemps(Calendar temps){
		return temps.get(Calendar.DAY_OF_MONTH) + "/" + temps.get(Calendar.MONTH) + "/" + temps.get(Calendar.YEAR) + " à " + temps.get(Calendar.HOUR) + "h" + temps.get(Calendar.MINUTE);
	}
	
	public Interface(Joueur J, Moteur M){
		super();
		
		setTitle(J.getNom());
		this.M = M;
		this.J = J;
		setContentPane(buildContentPane());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack(); 
		setVisible(true);		
	}
	
	private JPanel buildContentPane(){
		panel = new JPanel();
		GridBagLayout layout = new GridBagLayout();
		this.c = new GridBagConstraints();
		panel.setLayout(layout);
		
		JLabel TitreTemps = new JLabel("Nous sommes le: ");
		JLabel AffTemps = new JLabel(printTemps(M.getTemps()));
		
		JLabel TitreArgent = new JLabel("Vous possédez:");
		JLabel AffArgent = new JLabel(J.getArgent().toString());
		JLabel InterArgent0 = new JLabel(" et ");
		JLabel AffActions = new JLabel(String.valueOf(J.getNbreActions()));
		JLabel InterArgent1 = new JLabel(" actions.");
		
		JLabel TitreListe = new JLabel("Vos ordres envoyés:");
		ArrayList<Ordre> Liste = J.getOrdres();
		if(!Liste.isEmpty()){
			AffListe = new JLabel[Liste.size()];
			for(int i=0;i<Liste.size();i++)
			{
				AffListe[i] = new JLabel(Liste.get(i).toString());
			}
		} else
		{
			AffListe = new JLabel[1];
			this.AffListe[0]= new JLabel("Aucun.");
		}
		
		
		JLabel TitreOrdre = new JLabel("Créer ordre: ");
		Type = new JComboBox(new String[]{"ACHAT", "VENTE"});
		JLabel InterChamps0 = new JLabel(" de "); 
		Quantite = new JTextField();
		Quantite.setColumns(3);
		JLabel InterChamps1 = new JLabel(" actions au prix ");
		Prix = new JTextField();
		Prix.setColumns(3);
		JLabel InterChamps2 = new JLabel(" le ");
		Jour = new JTextField(String.valueOf(M.getTemps().get(Calendar.DAY_OF_MONTH)));
		Jour.setColumns(3);
		JLabel InterChamps3 = new JLabel("/");
		Mois = new JTextField(String.valueOf(M.getTemps().get(Calendar.MONTH)));
		Mois.setColumns(3);
		JLabel InterChamps4 = new JLabel("/");
		Annee = new JTextField(String.valueOf(M.getTemps().get(Calendar.YEAR)));
		Annee.setColumns(3);
		JLabel InterChamps5 = new JLabel(" à ");
		Heure = new JTextField(String.valueOf(M.getTemps().get(Calendar.HOUR)));
		Heure.setColumns(3);
		JLabel InterChamps6 = new JLabel("h");
		Minute = new JTextField(String.valueOf(M.getTemps().get(Calendar.MINUTE)));
		Minute.setColumns(3); 
		JButton Envoi = new JButton(new EnvoiOrdre(this, "Envoi")); 
		JButton Actualise = new JButton(new BoutonActualise(this, "Actualise"));
		
		c.gridx= GridBagConstraints.RELATIVE;
		c.gridy = 0;
		panel.add(TitreTemps,c);
		panel.add(AffTemps,c);
		
		c.fill = GridBagConstraints.HORIZONTAL;
		c.gridy++;
		panel.add(TitreArgent,c);
		panel.add(AffArgent,c);
		panel.add(InterArgent0,c);
		panel.add(AffActions,c);
		panel.add(InterArgent1,c);
		
		c.gridy++;
		panel.add(TitreListe,c);
		for(int i = 0;i<AffListe.length;i++)
		{
			c.gridy++;
			panel.add(AffListe[i],c);
		}
		
		c.gridy ++;
		panel.add(TitreOrdre,c);
		panel.add(Type,c);
		panel.add(InterChamps0,c);
		panel.add(Quantite,c); 
		panel.add(InterChamps1,c);
		panel.add(Prix,c); 
		panel.add(InterChamps2,c);
		panel.add(Jour,c);
		panel.add(InterChamps3,c);
		panel.add(Mois,c);
		panel.add(InterChamps4,c);
		panel.add(Annee,c);
		panel.add(InterChamps5,c);
		panel.add(Heure,c);
		panel.add(InterChamps6,c); 
		panel.add(Minute,c);
		panel.add(Envoi,c); 
		panel.add(Actualise,c);
		
		c.gridwidth = 10;
		ArrayList<Ordre> IListeAchats= M.getListeAchats().getListe();
		JLabel[] VisuelAchat = new JLabel[IListeAchats.size()];
		if(!IListeAchats.isEmpty()){
			for(int i=0;i<IListeAchats.size();i++)
			{
				VisuelAchat[i] = new JLabel(IListeAchats.get(i).toString());
				c.gridy++;
				panel.add(VisuelAchat[i],c);
			}
		}
		
		ArrayList<Ordre> IListeVentes= M.getListeVentes().getListe();
		JLabel[] VisuelVente = new JLabel[IListeVentes.size()];
		if(!IListeVentes.isEmpty()){
			for(int i=0;i<IListeVentes.size();i++)
			{
				VisuelVente[i] = new JLabel(IListeVentes.get(i).toString());
				c.gridy++;
				panel.add(VisuelVente[i],c);
			}
		}
		return panel;
	}
	
	public void majOrdres(){
		setContentPane(buildContentPane());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack(); 
	}
	public JComboBox getType(){
		return Type;
	}
	public JTextField getQuantite(){
		return Quantite;
	}
	public JTextField getPrix(){
		return Prix;
	}
	public JTextField getJour(){
		return Jour;
	}
	public JTextField getMois(){
		return Mois;
	}
	public JTextField getAnnee(){
		return Annee;
	}
	public JTextField getHeure(){
		return Heure;
	}
	public JTextField getMinute(){
		return Minute;
	}

	
}
